# -*- coding: utf-8 -*-
# @File  : 进程和线程.py
# @Author: zbh
# @Date  : 2025/2/19_14:25


'''
1、python多进程（multi-process）适用于计算密集型的任务，
2、对于I/O密集型任务应该使用多线程（multi-thread），比如磁盘读写，网络通信等
3、在python中，对于计算密集型任务，多进程占优势；对于IO密集型任务，多线程占优势。
4、使用多进程时，各进程拥有独立的内存空间，无法共享内存空间，所以各进程无法访问同一个全局变量，
若需要各进程共享某个全局变量，可以使用multiprocessing.Value()或multiprocessing.Array()来创建共享变量；
5、在windows系统里使用多进程时，程序里必须有入口函数main()，且程序末尾必须调用入口函数，即：
if __name__ == "__main__":
    main()
'''

import multiprocessing
import os
import time
from test_python_basics.denglu import login

def work_func():
    res = 1
    for i in range(1000000):
        res *= i
    print(res)

def main():
    process_list = []
    print("本机CPU为：",os.cpu_count(),"核")
    start = time.time()
    for i in range(4):  #
        p = multiprocessing.Process(target=login)  # 创建一个进程，target为进程要执行的函数
        # p2=multiprocessing.Process(target=work_func)
        process_list.append(p)  # 将进程放入进程列表
        # process_list.append(p2)
        p.start()
        # p2.start()
    print(process_list)
    for p in process_list:  # 等待所有进程执行完毕
        print(p)
        p.join()  # 进程结束后，应该调用 join() 方法等待进程完成，以确保资源被正确释放
    stop = time.time()
    print("计算密集型任务，多进程耗时：",round(stop-start,2))  # 计算密集型任务，多进程耗时： 1.736175537109375

if __name__ == "__main__":
    main()






